
package util;

import java.awt.Component;
import javax.swing.JCheckBox;
import javax.swing.JTable;
import javax.swing.SwingConstants;
import javax.swing.table.DefaultTableCellRenderer;
import javax.swing.table.DefaultTableColumnModel;
import javax.swing.table.DefaultTableModel;
import javax.swing.table.TableCellRenderer;
import javax.swing.table.TableColumn;
import javax.swing.table.TableModel;
import javax.swing.table.TableRowSorter;
import org.jdesktop.swingx.JXTable;

/**
 *
 * @author !gaso
 */
public class tableMiniModel {
    
    JTable tablaFormato;
    JXTable JXtablaFormato;

    public JTable table(JTable tabla ){
        tablaFormato = tabla;
        
        
        //Se instancia el Modelo de la Tabla
        DefaultTableModel ed_modeloTabla = new DefaultTableModel();

        
        //Alto de las Filas
        tablaFormato.setRowHeight(24);
        
        // Permitir solo una seleccion por vez
        tablaFormato.setSelectionMode(javax.swing.ListSelectionModel.SINGLE_SELECTION);
        
         // Bloquear columnas
        tablaFormato.getTableHeader().setReorderingAllowed(false);
        
         //Hacer Que tabla se tenga ordenamiento. http://chuwiki.chuidiang.org/index.php?title=JTable:_Ordenar_y_filtrar_filas
        // Instanciamos el TableRowSorter y lo añadimos al JTable
        TableRowSorter<TableModel> columOrdenamiento = new TableRowSorter<TableModel>(tablaFormato.getModel());
        tablaFormato.setRowSorter(columOrdenamiento);
        
        //Desactivar el AutoResize para que tome un Ancho definido
      //  tablaFormato.setAutoResizeMode(JTable.AUTO_RESIZE_OFF);
        
//        tablaFormato.getColumn("Consultar").setCellRenderer(new ButtonRenderer("/resources/exception_16x16.png"));
//        tablaFormato.getColumn("Consultar").setCellEditor(
//                new ButtonEditor(new JCheckBox(), "/resources/exception_16x16.png", tablaFormato));
        
       
        return tablaFormato;
        //return AutoSizeColum(tablaFormato, ed_modeloTabla);
    }
    
     public JXTable table(JXTable tabla ){
        JXtablaFormato = tabla;
        
             
        
        //Alto de las Filas
        JXtablaFormato.setRowHeight(24);
        
        // Permitir solo una seleccion por vez
        JXtablaFormato.setSelectionMode(javax.swing.ListSelectionModel.SINGLE_SELECTION);
        
         // Bloquear columnas
        JXtablaFormato.getTableHeader().setReorderingAllowed(false);
        
         //Hacer Que tabla se tenga ordenamiento. http://chuwiki.chuidiang.org/index.php?title=JTable:_Ordenar_y_filtrar_filas
        // Instanciamos el TableRowSorter y lo añadimos al JTable
//        TableRowSorter<TableModel> columOrdenamiento = new TableRowSorter<TableModel>(tablaFormato.getModel());
//        tablaFormato.setRowSorter(columOrdenamiento);
        
        //Desactivar el AutoResize para que tome un Ancho definido
      //  tablaFormato.setAutoResizeMode(JTable.AUTO_RESIZE_OFF);
        
//        tablaFormato.getColumn("Consultar").setCellRenderer(new ButtonRenderer("/resources/exception_16x16.png"));
//        tablaFormato.getColumn("Consultar").setCellEditor(
//                new ButtonEditor(new JCheckBox(), "/resources/exception_16x16.png", tablaFormato));
        
        //Centrar Titulos de Tabla
        ((DefaultTableCellRenderer) JXtablaFormato.getTableHeader().getDefaultRenderer()).setHorizontalAlignment(
                SwingConstants.CENTER);
        
        
        JXtablaFormato.getColumns();
        
        DefaultTableModel d;
        
        
        
        
       //Asignarle botones para Compactar Contenido
        JXtablaFormato.setColumnControlVisible(true); 
        
        return JXtablaFormato;
        //return AutoSizeColumJX(JXtablaFormato, JXtablaFormato.getModel());
    }
    
    
    
    /**
     * Retorna Tabla con AnchoPredefinido 
     * @see  http://goo.gl/4q8gs
     * @param table
     * @param model
     * @return JTable con Ancho Automatico
     */
    public JTable AutoSizeColum(JTable table, TableModel model) {
        table.setAutoResizeMode(JTable.AUTO_RESIZE_OFF);
        table.setModel(model);

        int margin = 5;

        for (int i = 0; i < table.getColumnCount(); i++) {
            int vColIndex = i;
            DefaultTableColumnModel colModel = (DefaultTableColumnModel) table.getColumnModel();
            TableColumn col = colModel.getColumn(vColIndex);
            int width = 0;

            // Get width of column header
            TableCellRenderer renderer = col.getHeaderRenderer();

            if (renderer == null) {
                renderer = table.getTableHeader().getDefaultRenderer();
            }

            Component comp = renderer.getTableCellRendererComponent(table, col.getHeaderValue(), false, false, 0, 0);

            width = comp.getPreferredSize().width;

            // Get maximum width of column data
            for (int r = 0; r < table.getRowCount(); r++) {
                renderer = table.getCellRenderer(r, vColIndex);
                comp = renderer.getTableCellRendererComponent(table, table.getValueAt(r, vColIndex), false, false,
                        r, vColIndex);
                width = Math.max(width, comp.getPreferredSize().width);
            }

            // Add margin
            width += 2 * margin;

            // Set the width
            col.setPreferredWidth(width);
        }

        ((DefaultTableCellRenderer) table.getTableHeader().getDefaultRenderer()).setHorizontalAlignment(
                SwingConstants.LEFT);

        // table.setAutoCreateRowSorter(true);
        table.getTableHeader().setReorderingAllowed(false);

        return table;
    }
    
    
        /**
     * Retorna Tabla con AnchoPredefinido 
     * @see  http://goo.gl/4q8gs
     * @param table
     * @param model
     * @return JTable con Ancho Automatico
     */
    public JXTable AutoSizeColumJX(JXTable table, TableModel model) {
        table.setAutoResizeMode(JTable.AUTO_RESIZE_OFF);
        table.setModel(model);

        int margin = 5;

        for (int i = 0; i < table.getColumnCount(); i++) {
            int vColIndex = i;
            DefaultTableColumnModel colModel = (DefaultTableColumnModel) table.getColumnModel();
            TableColumn col = colModel.getColumn(vColIndex);
            int width = 0;

            // Get width of column header
            TableCellRenderer renderer = col.getHeaderRenderer();

            if (renderer == null) {
                renderer = table.getTableHeader().getDefaultRenderer();
            }

            Component comp = renderer.getTableCellRendererComponent(table, col.getHeaderValue(), false, false, 0, 0);

            width = comp.getPreferredSize().width;

            // Get maximum width of column data
            for (int r = 0; r < table.getRowCount(); r++) {
                renderer = table.getCellRenderer(r, vColIndex);
                comp = renderer.getTableCellRendererComponent(table, table.getValueAt(r, vColIndex), false, false,
                        r, vColIndex);
                width = Math.max(width, comp.getPreferredSize().width);
            }

            // Add margin
            width += 2 * margin;

            // Set the width
            col.setPreferredWidth(width);
        }

        ((DefaultTableCellRenderer) table.getTableHeader().getDefaultRenderer()).setHorizontalAlignment(
                SwingConstants.CENTER);

        // table.setAutoCreateRowSorter(true);
        table.getTableHeader().setReorderingAllowed(false);

        return table;
    }
}
